In microprocessor-based computing systems, critical runtime system events (such as error conditions and status generation) are typically stored in a runtime event log in non-volatile, e.g., flash, memory. The logging of such events is performed by the computer's basic input output system (BIOS).
A significant number of events can be generated during computer system operations. This is particularly true during, for example, debugging operations. Non-volatile memory device space, however, is a precious resource within desktop platforms. The clear or unused space available for system event logging on non-volatile devices is often very limited. In addition, if, e.g., a flash memory is the type of non-volatile memory device employed for event logging, the storage of large amounts of event data using conventional event log data formats often requires block erase operations, which are relatively time-consuming to perform.
The delays inherent in block erase operations during event logging can cause major system problems, as the computer's operating system is stalled while the BIOS logs events. Consequently, if the event logging operations are too slow, the operating system may miss vital timer interrupts and fail.
In order to provide event storage on a typical flash memory device without the risk of operating system timer disruption and thus without the delays inherent in block erase operations, the runtime event log must be limited to the clear or unused space likely to be available on the device. A typical 2 megabyte flash memory device, for example, on a typical desktop personal computer can only afford about 4 kilobytes of space for runtime event log storage. Using traditional runtime event log data formats, this amounts to only about 300 stored events, an insufficient number for most debugging needs.
It is desired, therefore, to provide a runtime event log storage solution which is highly efficient in terms of time and space requirements, i.e., which provides storage for a significant number of runtime events on a typical non-volatile memory device without, e.g., requiring block erases.